Brushing tools for digital image adjustments

ABSTRACT

Among other things, methods, systems and computer program products for applying an image adjustment to an image. A choice of image adjustments is presented to a user of a data processing device. A user selection is received from among the choice of image adjustments at least one image adjustment that a user desires to apply to an area of interest of the image. The user selected image adjustment is applied to an entirety of an image. A preview of the user selected image adjustment applied to the entirety of the image is displayed. Also, user input comprising user selection of a brushing application is received. The user selected image adjustment is applied to the area of interest of the image and a remainder of the image is restored to a pre-adjustment state using the user selection of the brushing application.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is a divisional of U.S. application Ser. No.12/611,001, filed Nov. 2, 2009, the entire contents of which areincorporated by reference herein.

BACKGROUND

This application relates to adjusting digital image.

Digital images can be modified using an image editor, for example, toimprove the contrast of an image when the image appears dull or flat.Also, the image editor can apply tinting or add a vignette to an image.To modify the digital image, a user typically selects a desired imageadjustment to modify the entire image using the selected imageadjustment. Also, the image editor may include a brush for applying animage adjustment. A brush represents a drawing tool in computergraphics. When editing a digital image, a brush can be used to changethe color of desired pixels on the digital image. For example, a brushcan be represented using a predefined shape, and the pixels on thegraphics document covered by the shape of the brush can be affected witha desired image adjustment. Typically, the user selects an imageadjustment and manually loads the brush with the selected imageadjustment before being able to apply the image adjustment.

SUMMARY

Methods, systems and computer program products are described forimplementing a brushing tool for user selected image adjustments.

In one aspect, a method can include presenting a choice of imageadjustments to a user of a data processing device. The method caninclude receiving, at the data processing device, a user selection fromamong the choice of image adjustments at least one image adjustment thata user desires to apply to an area of interest of the image. The methodcan include applying, at the data processing device, the user selectedimage adjustment to an entirety of an image. The method can includedisplaying, at the data processing device, a preview of the userselected image adjustment applied to the entirety of the image. Themethod can include receiving, at the data processing device, user inputcomprising user selection of a brushing application. Also, the methodcan include applying, at the data processing device, the user selectedimage adjustment to the area of interest of the image and restoring aremainder of the image to a pre-adjustment state using the userselection of the brushing application.

Implementations can optionally include one or more of the followingfeatures. The selected brushing application can include a brush-inapplication configured to apply the user selected image adjustment tothe area of interest of the image. Implementing the brush-in applicationcan include removing the pre-applied image adjustment from the entiretyof the image to restore the image to a pre-adjustment state; loading abrush with the selected image adjustment; and applying the user selectedimage adjustment onto the area of interest of the image based on theuser input that comprises an indication of a brush stroke. The selectedbrushing application can include a brush-away application configured toremove the selected image adjustment from the image. Implementing thebrush-away application can include using a brush to remove thepre-applied image adjustment from the image except for the area ofinterest of the image based on the user input that comprises anindication of a brush stroke. Applying the user selected imageadjustment can include applying a brush mask over the area of interestof the image. The choice of image adjustments can include at least oneof skin smoothing, blurring, saturation, color, lighten or darken,devignette, white balance, exposure, enhance, chromatic aberration,noise reduction, curves, highlight and shadows, black and white, colormonochrome, sepia tone, sharpen, edge sharpen and vignette. The methodcan include detecting an edge of the area of interest of the image; andcontrolling application of the selected image adjustment based on thedetected edge. The method can include identifying one or more areas ofshadows, midtones or highlights on the image; and controllingapplication of the user selected image adjustment based on theidentified areas of shadows, midtones or highlights per brush stroke.The method can include receiving user modification of a strength of theuser selected image adjustment.

In another aspect, a method can include presenting a choice of brushespreloaded with a plurality of image adjustments to a user of a dataprocessing device. The method can include receiving, at the dataprocessing device, a user selection of at least one of the brushespreloaded with image adjustments to apply to an area of interest of theimage. The method can include receiving, at the data processing device,user input comprising an indication of the area of interest to apply theuser selected at least one brush preloaded with a corresponding imageadjustment. Also, the method can include applying, at the dataprocessing device, the corresponding image adjustment to the indicatedarea of interest of an image using the user selected preloaded brushbased on the user input.

Implementations can optionally include one or more of the followingfeatures. The user selected preloaded brush can include an adjustablecursor area that includes an inner area and an outer area to apply theselected image adjustment to pixels covered within the cursor area,wherein the inner area represents a maximum effect of the user selectedimage adjustment and the outer area represent a minimum effect. Thechoice of brushes can be preloaded with image adjustments that includeat least one of skin smoothing, blurring, saturation, color, lighten ordarken. The method can include detecting an edge of the area of interestof the image. The image can include controlling application of the imageadjustment corresponding to the user selected preloaded brush onto thearea of interest of the image based on the detected edge. The method caninclude identifying one or more areas of shadows, midtones or highlightson the image; and controlling application of the image adjustmentcorresponding to the user selected preloaded brush based on theidentified one or more areas of shadows, midtones or highlights perbrush stroke. The method can include receiving user input modifying astrength of the image adjustment corresponding to the user selectedpreloaded brush.

In another aspect, a method can include receiving, at a data processingdevice, a user request to apply an image adjustment to an area of animage using one or more brush strokes. The method can include applying,at the data processing, the requested image adjustment to the area ofthe image. The method can include displaying, at the data processing, avisual indication identifying the area of the image applied with theimage adjustment.

Implementations can optionally include one or more of the followingfeatures. The visual indication can include an overlay representing theapplied image adjustment positioned over the area of the image. Theoverlay can include a colored layer. Displaying the visual indicationcan include displaying pixels of the area of the image applied with theimage adjustment without displaying pixels of rest of the image.Displaying the visual indication can include displaying an overlayrepresenting one or more brush strokes corresponding to the appliedimage adjustment without displaying any pixels of the image.

In another aspect, an apparatus can include an image adjustment systemconfigured to apply an image adjustment to a target area of an image.The image adjustment system can include a graphical user interface topresent available image adjustments and brushing tools. The apparatuscan include a display unit in communication with the image adjustmentsystem. The display unit can be configured to display the graphical userinterface to present the available image adjustments and brushing toolsto a user. The apparatus can include a user input unit to communicatewith the image adjustment system and the display unit. The user inputunit can be configured to receive a user selection of at least one ofthe available image adjustments and at least one of the availablebrushing tools. The image adjustment system can be configured to applythe user selected image adjustment to an entirety of the image. Thedisplay unit is configured to display a preview of the user selectedimage adjustment applied to the entirety of the image. The imageadjustment system is configured to apply the user selected imageadjustment to the target area of the image and restore a remainder ofthe image to a pre-adjustment state. Also, the display unit can beconfigured to display a result of the applied image adjustment to thetarget area of the image.

Implementations can optionally include one or more of the followingfeatures. The available brushing tools can include a brush-in toolconfigured to remove the applied image adjustment from the entirety ofthe image, and apply the user selected image adjustment to the targetarea of the image without affecting a remainder of the image. Theavailable brushing tools can include a brush-away tool to remove theuser selected image adjustment from areas of the image other than thetarget area. The display unit can be configured to visually indicate thetarget area of the image applied with the selected image adjustment. Theimage adjustment system can include a preview unit configured tocommunicate with the display unit. The preview unit can be configured torender a preview of the selected image adjustment to the entire image,and send the rendered preview to the display unit to be displayed to auser. The graphical user interface can include a user interface widgetconfigured to modify the strength of the user selected image adjustment.

In another aspect, a computer-readable medium embodying instructionswhen executed by a processor causes a data processing data processing toperform various operations. Operations can include receiving a userselection of an image adjustment that a user desires to apply to an areaof interest of an image. Operations can include applying the imageadjustment to an entirety of the image. Operations can includepreviewing the image adjustment applied to the entirety of the image.Operations can include receiving a user selection of a brushingapplication to apply the user selected image adjustment. Operations caninclude receiving user input indicating one or more brush strokes of theuser selected brushing application. The indicated one or more brushstrokes can represent the area of interest of the image to apply theuser selected image adjustment. Operation can include applying the userselected image adjustment to the area of interest of the image using theuser selected brushing application and restoring a remainder of theimage to a pre-adjustment state. Also, operations can include displayinga result of the applied user selected image adjustment.

Implementations can optionally include one or more of the followingfeatures. The brushing application can include a brush-in applicationconfigured to remove the applied image adjustment from the entirety ofthe image; load the user selected image adjustment to a brush; and applythe user selected image adjustment to the areas of interest using thebrush. The brushing application can include a brush-away application toremove the user selected image adjustment from areas of the image otherthan the area of interest.

The subject matter described in this specification can potentiallyprovide one or more advantages. The brush-in and brush-away applicationscan be used to selectively add or remove a user selected imageadjustment to a user selected area on the image. The user selected imageadjustment can be previewed to allow the user to obtain a desiredstrength of the image adjustment before applying the image adjustment tothe image. Also, a set of quick brushes can be preloaded withcorresponding image adjustments to allow for quick application of thevarious image adjustments. Because the brushes are preloaded with theimage adjustments, the user can simply select one of the preloadedbrushes and start brushing right away.

Additionally, various overlays can be implemented to provide visualrepresentation of image adjustments applied to an image. For example, acolored overlay can be displayed over the area of interest to identifythe area where the image adjustment was applied. Also, an overlay thatillustrates the brush strokes can be displayed over the image toidentify the actual brush strokes used to apply the image adjustment tothe image. In this overlay, the actual pixels of the image are notdisplayed to the user. In another type of overlay, the image can bedisplayed with an overlay that shows only the pixels of the area ofinterest affected by the image adjustment. Remainder of the image is notdisplayed to the user to focus the attention of the view to the area ofinterest.

Also, the techniques described in this specification can be used toimplement brush control using highlights/midtones/shadows. In this brushcontrol mechanism, tonal information can be used to control the brush,per brush stroke. Each brush stroke can be controlled based on tonalinformation such as highlights, midtones or shadows. For example, whenthe user desires to darken the bright area (e.g., the sky but not thetrees in a field) in an image, highlights can be used to automaticallydarken the bright area(s) only.

The subject matter described in this specification can be implemented asa method or as a system or using computer program products, tangiblyembodied in computer readable medium, such as a CD-ROM, a DVD-ROM, asemiconductor memory, and a hard disk. Such computer program productsmay cause a data processing apparatus to conduct one or more operationsdescribed in this specification.

In addition, the subject matter described in this specification can alsobe implemented as a system including a processor and a memory coupled tothe processor. The memory may encode one or more programs that cause theprocessor to perform one or more of the method acts described in thisspecification. Further the subject matter described in thisspecification can be implemented using various data processing machines.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1A is a process flow diagram showing a process for applying imageadjustments to an image.

FIG. 1B is a process flow diagram showing a process for implementing abrush-in tool.

FIG. 1C is a process flow diagram showing a process for implementing abrush-away tool.

FIG. 2 is a process flow diagram showing a process (200) forimplementing a pre-loaded brush tool.

FIGS. 3A and 3B show process flow diagrams showing a process forpresenting a visual indication of the applied image adjustment.

FIG. 4 below is a screen shot of a GUI that illustrates an exampleoverlay.

FIG. 5 below is a screen shot of a GUI that illustrate displaying pixelsof the image affected by the image adjustment.

FIG. 6 is a screenshot showing the brush strokes of the imageadjustment.

FIG. 7 shows a GUI that can be used to adjust available brush parametersfor a selected image adjustment.

FIG. 8 shows another GUI (800) that can be used to adjust additionalbrush parameters.

FIG. 9 shows a GUI that can be presented to select and modify differentimage filters.

FIG. 10 shows another GUI that can be used to select and/or modifydifferent adjustments.

FIG. 11 is a block diagram of a data processing device and system thatcan be used to implement the techniques described with respect to FIGS.1A-1C, 2, 3A-3B and 4-10.

FIG. 12 is a block diagram of another data processing device and systemthat can be used implement the techniques as described with respect toFIGS. 1A-1C, 2, 3A-3B and 4-10.

Like reference symbols and designations in the various drawings indicatelike elements.

DETAILED DESCRIPTION

Techniques, apparatus, systems and computer program product aredescribed for implementing various brush tools for applying adjustmentsto an image. A brush can correspond to an adjustment for a singleattribute, such as brightness. Alternatively, a brush can correspond toan adjustment for a combination of attributes. For example, a set ofquick brushes can be preloaded, each corresponding to a particularadjustment, to provide “read-to-use” brush tools. Also, brush-in andbrush-out tools can be used to selectively apply or remove a particularadjustment. Moreover, to display the applied adjustments, an overlay canbe implemented over the image to identify the locations of the appliedadjustments.

Brush-In/Brush-Out Tool

FIG. 1A is a process flow diagram showing a process (100) for applyingimage adjustments to an image. A system or an apparatus can implement agraphical user interface (GUI) to present a choice of image adjustmentsto a user (110). The image adjustments available for user selection caninclude skin smoothing, blurring, saturation, lighten or darken,devignette, white balance, exposure, enhance, chromatic aberration,noise reduction, curves, highlight & shadows, levels, color, black &white, color monochrome, sepia tone, sharpen, edge sharpen, andvignette. The system can receive a user selection of one of the imageadjustments presented (120). The system can apply the user selectedimage adjustment to the entire image (130). The application of the imageadjustment to the entire image is temporary and/or an intermediate stepto the final output. Also, the system can display the entire image withthe pre-applied image adjustment for the user to preview (140). Thesystem can

receive a user selection of a brush tool to use in applying the selectedimage adjustment to a target area on the image (150). The receivedselection can include a brush-in tool or a brush-away tool. Depending onthe use selection of either the brush-in tool of the brush-away tool,the selected image adjustment can be applied to the target area in adifferent manner. For example, the system can restore the image topre-adjustment state and enable the brush-in tool to apply the imageadjustment to the target area of interest (160). Also, the system canleave the image with the adjustment applied and enable the brush-awaytool to remove the image adjustment from areas of the image other thanthe target area of interest (165). The techniques for implementing thebrush-in or brush-away tool are described below with respect to FIGS. 1Band 1C.

FIG. 1B is a process flow diagram showing a process (170) forimplementing a brush-in tool. The system can implement the brush-in toolto apply the selected image adjustment to the target area(s) of intereston the image. As described above, the selected adjustment is initiallyapplied to the entire image (130) and previewed to the user (140). Forexample, if the selected adjustment is to darken, the entire image isdarkened initially. As the entire image is darkened, the user canvisually observe whether the amount of darkening is sufficient toachieve the desired effect. Also, the user can focus his attention to aspecific area of interest (e.g., the selected area to apply the imageadjustment) on the image. For example, the area of interest may be ajacket worn by the person in the image. The user can incrementallydarken the image until the area of interest has achieved a desiredeffect. If the area of interest has been darkened too much, the user canremove the previous increment of the darken adjustment or apply alighten adjustment until the desired effect is achieved on the area ofinterest. Then the applied overall adjustment (e.g., the desired amountof darkening) is removed from the entire image (172), and the adjustmentis transferred or loaded onto a brush (174). The brush loaded with thedesired adjustment can be used to selectively apply the loadedadjustment to the target area(s) of interest on the image (176). Theremaining areas of the image is unaffected by the brush because thebrush is able to apply the adjustment to only those pixels that belongto the area of interest using edge detection, for example. Thus, exceptfor the area of interest, the remainder of the image is restored to apre-adjustment state. The techniques for controlling the brush,including edge detection are described further below. While applying theimage adjustment using the brush-in tool, the user can decide to applythe adjustment to the entire image or remove from the entire image.

FIG. 1C is a process flow diagram showing a process (180) forimplementing a brush-away tool. The brush-out too can be implemented totake away the selected image adjustment from areas outside of the targetarea(s) of interest. As described above, the user selected imageadjustment is initially applied to the entire image (130) and previewedto the user (140). Similar to the brush-in tool, the user canincrementally apply the selected adjustment until the desired effect isachieved (e.g., the desired amount of adjustment). Once the desiredamount of adjustment is applied to the entire image, the appliedadjustment is left on the entire image (182). Then the brush away toolcan be used to remove the applied adjustment from specific areas of theimage, leaving the image adjustment on the target area(s) of interest(184). By removing the image adjustment from the remainder of the imageother than the area of interest, the remainder of the image is restoredto a pre-adjustment state. The brush-away tool to remove the adjustmentcan be implemented as an eraser, for example. While applying the imageadjustment using the brush-away tool, the user can decide to put backthe adjustment to the entire image or remove from the entire image.

Quick Brush Tool

In addition to the brush-in and brush-away tools, the system can presenta set of quick brushes, each pre-loaded with a corresponding imageadjustment. For example, a quick brush can be preloaded with adjustmentsincluding at least one of skin smoothing, dodge (lighten), burn(darken), polarize (multiply), intensify contrast (overlay), tint,contrast, saturation, definition, vibrancy, blur, sharpen, haloreduction, and noise reduction. Because the quick brushes are alreadypre-loaded with a corresponding image adjustment, the user can quicklyapply the desired image adjustment or combination of adjustments withouthaving to select and load an adjustment to a brush.

FIG. 2 is a process flow diagram showing a process (200) forimplementing a pre-loaded brush tool. A system or apparatus canimplement a GUI to present a choice of brushes preloaded with differentimage adjustments (210). The system can receive user selection of one ormore of the preloaded brushes (220). The system can apply the userselected image adjustment(s) using the pre-loaded brush (230).

In some implementations, the user can create a custom quick brush bypre-loading a desired image adjustment to a brush and saving the customquick brush. Such custom quick brushes can allow the user to save aspecific image adjustment for later use.

Brush Control

When applying an image adjustment to a target area(s) of interest usingthe brush-in tool, brush-away tool or quick brushes, the system canprovide brush control assistance to facilitate brushing of the targetarea(s) of interest. For example, the system can present a choice ofbrush controls including brush size, brush softness and brush strength.Also, a brushing technique, such as feathering can be implemented tosmear the brush mask to provide a smoother appearance. These brushcontrols can affect each brush stroke with respect to pixels covered andstrength of image adjustment applied to the pixels. A brush strokerepresents a path of the brush that covers an area or pixels of theimage for a single application of the brush.

In addition, brush controls can be provided to assist brushing within aboundary of the target area(s) of interest. For example, the system canprovide a brush control based on edge detection. Edge detection or edgeaware can be implemented to assist brushing of pixels within theboundary of the target area(s) by detecting the edges of the image.Also, each brush stroke can be controlled based on tonal informationsuch as highlights, midtones or shadows. For example, when the userdesires to darken the bright area (e.g., the sky but not the trees in afield) in an image, highlights can be used to automatically darken thebright area(s) only.

Such brush control mechanisms (edge aware and tonality detection) can beimplemented per-brush-stroke. Thus, the user can elect to use shadowsfor one brush stroke, midtones for the next brush stroke and highlightsfor the third brush stroke. Such, per-brush-stroke control affects thefuture brush strokes without changing the already applied brush strokes.For example, in the three brush-stroke example above, the selection ofmidtones affects the second brush stroke without changing the firstbrush stroke. Also, the selection of highlights for the third brushstroke does not affect the first two brush strokes.

Overlay

Once the selected image adjustments are applied to the area of intereston the image, the system can implement a GUI to provide a visualindication of the applied image adjustment. FIGS. 3A and 3B show processflow diagrams showing a process (300) for presenting a visual indicationof the applied image adjustment. A system or an apparatus can implementa GUI to receiving a request to apply an image adjustment, using a brushmask for example, to an area of interest on an image using one or morebrush strokes (310). The system can apply the requested image adjustmentto the area of interest on the image (320). The system can display theimage to visually identify the area of interest affected by the appliedimage adjustment (330).

In displaying the image to visually identify the area of interestaffected by the applied image adjustment, different overlays can beimplemented. For example, the system can display the image with a visuallayer (e.g., an overlay) representing the image adjustment (e.g., brushmask) positioned over the affected area of interest on the Image (332).FIG. 4 below is a screen shot of a GUI that illustrates this overlay.

Also, the system can display the pixels of the area of interest with theapplied image adjustment and an overlay over the pixels of the rest ofthe image (334). The overlay displayed over the rest of the image caneffectively block the pixels outside the affected area of interest. Theblocking overlay can be a single color, such as black or white tovisually cover-up or block the remaining areas of the image. In thismanner, the area of interest with the applied image adjustment can beeasily viewed by the user. FIG. 5 below is a screen shot of a GUI thatillustrates this blocking overly.

In addition, the system can display an overlay that represents theactual brush strokes of the image adjustment and/or an outline of thearea of interest (336). This brush stroke overlay can block all of thepixels on the image so that none of the actual pixel information isvisible to the user. A background color such as black or white can beused to cover the entire image using the brush stroke overlay. FIG. 6below is a screen shot of a GUI that illustrates this brush strokeoverly.

Graphical User Interface & Display for Overlays

FIGS. 4, 5 and 6 are screenshots of a GUI that shows different examplesof overlays that can be used to identify the applied image adjustment.For example, FIG. 4 shows a screenshot (400) of an image of a man and awoman over a background. The image includes an area of interest (402)that includes the pixels covering the man and the woman. The dottedlines are not part of the image but rather used to illustrate a borderaround the area of interest (402). A selected image adjustment has beenapplied to the area of interest (402). The applied image adjustment isidentified using an overlay (404) displayed over the area of interest(402). The overlay (404) can indicates the areas on the image in whichthe image adjustment was applied. For example, a colored (e.g., red)overlay can be displayed to show the areas on the image that werepainted. The overlay can be transparent or translucent to show thepixels below the overlay.

FIG. 5 shows a screenshot (500) of an image of a man and a woman over abackground. The screenshot (500) in FIG. 5 shows the same image as theone shown in FIG. 4. However, in this screenshot (500), the actual pixelinformation with the applied image adjustment (504) is displayed for thepainted area of interest (502). The dotted lines are not part of theimage but rather used to illustrate a border around the area of interest(502). The pixels for the areas outside the area of interest (502) arecovered-up by a blocking overlay (506). The blocking overlay (506) canbe a layer of any color, such as black, white, grey, etc. to hide theactual pixels of the image below the blocking layer.

FIG. 6 is a screenshot (600) of an image of a man and a woman over abackground. The screenshot (600) shows the same image as shown in FIGS.4 and 5. However, in this screenshot (600), an overlay (604) that showsthe actual brush strokes and/or an outline of an area of interest (602)is displayed. The dotted lines are not part of the image but rather usedto illustrate a border around the area of interest (602). The pixelinformation below the brush stroke overlay (604) is not visible to theuser. Also, the rest of the image is covered by a blocking overlay(606), similar to the one shown in FIG. 5. In this implementation, noneof the pixels of the image is displayed. Rather, the brush strokeoverlay is displayed to show the brush strokes used to apply the imageadjustment to the area of interest (602).

Brush Cursor Representation

When applying the image adjustments using the brush tools described inthis specification, the location and appearance of a brush can bedisplayed using a cursor that represents the areas that will be brushed.The brush cursor can be represented using an inner circle surrounded byan outer circle or a ring. The inner circle can be displayed as a solidcircle that represents the maximum strength of a particular adjustment.The outer circle can be displayed as a gradient that decreases from theedge of the inner circle to the edge of the outer circle. The imagepixels positioned outside the outer circle are not affected by thebrush. In some implementations, both the inner and outer circles can bedisplayed as solid circles to provide maximum strength adjustment forthe entire cursor area.

Graphical User Interface for Brush Control and Adjustment

Various GUIs can be presented to the user to receive user input thatselects and/or modifies different image adjustments and brushparameters. For example, FIG. 7 shows a GUI (700) that can be used toadjust available brush parameters for a selected image adjustment. TheGUI (700) is associated with an enhance image adjustment. The GUI (700)can include user interface elements or widgets (e.g., sliders) to adjustthe brush size (702), brush strength (704) and brush softness (706).Also, the GUI can include a widget to control the brush range based onedge detection (708). Edge detection allows a user to automaticallybrush an image adjustment within the line borders of an area ofinterest. Also, shadows, midtones, and highlights can be used to varythe brush range (710) based on tonal information.

FIG. 8 shows another GUI (800) that can be used to adjust additionalbrush parameters. In addition to the sliders shown in FIG. 7, the GUI(800) in FIG. 8 includes a menu (810) widget for presenting brushparameter options. The menu (810) widget can include options forapplying an image adjustment to different areas of an image. Forexample, a menu option to “apply to entire photo” can be used to applythe image adjustment to the entire image. Another menu option to “clearfrom entire photo” can be used to remove the image adjustment from theentire image. Also, a menu option to “invert” can be used to invert thearea interest from the current selection to all areas outside of thecurrent selection. For example, if a man in an image is currentlyselected as the area of interest, the invert option can be used toinvert the area of interest to the areas of the image other than theman.

The menu (810) widget can include options to adjust the overlay asdescribed with respect to FIGS. 3A, 3B, 4, 5 and 6. The availableoverlay options can include: none, color overlay, brush strokes, onblack, and on white. Also, the menu (810) widget can include options toadjust the brush range. The available options for the brush range caninclude: all, shadows, midtones and highlights. As described above,shadows, midtones and highlights use the tonal information of the imageto apply brush control.

In addition, GUIs can be presented to select and modify different imagefilters for a given image adjustment. For example, FIG. 9 shows a GUI(900) that can be used to select and modify the values for differentimage enhancement filters. The GUI (900) can include widgets, such assliders, to modify the amount of contrast (902), definition (904),saturation (906) and vibrancy (908) applied in the filter. Also, the GUI(900) can include a widget to select and adjust different the colorsettings including the color intensity (910). The GUI (900) can includea brush icon widget (912) that visually indicates to the user that theuser has brushed the image. Also, the brush icon can be used to bringback the brushing tool.

FIG. 10 shows another GUI (1000) that can be used to select and/ormodify different adjustments. The GUI (1000) includes widgets, such assliders, to modify the brush size, brush softness and brush strength(1002). In addition, the GUI (1000) includes a widget, such as a menuelement, to present different adjustments (1004) including: quickbrushes, retouch, red eye reduction, spot & patch, devignette,straighten, crop, flip, white balance, exposure, enhance, chromaticaberration, noise reduction, curves, highlight & shadows, levels, color,black & white, color monochrome, sepia tone, sharpen, edge sharpen,vignette, extended range test, and color space test. Also, a menu widget(1006) can be provided to present a list of different quick brushes,such as skin smoothing, dodge (lighten), burn (darken), polarize(multiply), intensify contrast (overlay), tint, contrast, saturation,definition, vibrancy, blur, sharpen, halo reduction, and noisereduction. A user can select multiple instances of the availableadjustments and brush them into different parts of the image. Forexample, a user can choose to saturate one part of the image andde-saturate a different part of the image.

Removable (e.g., Non-Destructible) Adjustments

Each image adjustment can be implemented as a separate brush. Each brushis non-destructible or removable to allow the user to selectively applyor remove the corresponding image adjustment to specific areas of animage with precise control over brush size, strength and softness.Because the brush is non-destructive, applied effects can be modified atany time.

In implementing the non-destructive brushes, applied image adjustmentsare represented as separate fields in a record or data structure. Therecord or data structure containing the adjustment information is usedto apply a brush mask over the image. Thus, the adjustments appliedusing the non-destructive brushes do not directly modify the imagevalues, e.g. pixels.

FIG. 11 is a block diagram of a data processing device and system (1100)that can be used to implement the techniques described with respect toFIGS. 1A-1C, 2, 3A-3B and 4-11. The system (1100) can include aprocessor (1120) to control operation of the system (1100) includingexecuting any machine or computer readable instructions. The processor(1120) can communicate with a memory or data storage unit (1130) thatcan store data, such as image files and machine or computer readableinstructions. Also, the processor (1120) can communicate with an imagemanagement system (1110) to manage different image files includingimport, export, storage, image adjustment, metadata application anddisplay of the image files. The image management system (1110) caninclude a graphical user interface (1112), for example, the graphicaluser interface described above with reference to FIG. 1A. The imagemanagement system (1110) can include a quick brush 1114, for example,the quick brush tool described above. The image management system (1110)can include a brush-in/brush-away tool (1116), for example, the brush-intool, brush-away tool described above. The image management system(1110) can include a preview generator (1118), for example, to generatethe preview described above with reference to FIGS. 1A-1C. The processor(1120) can communicate with an input/output (I/O) interface (1140) thatcan interface with different input devices, output devices or both. Forexample, the I/O interface (1140) can interface with a touch screen(1142) on a display device (1102). Also, the I/O interface (1140) caninterface with a user input device (1144) such as a keyboard, a mouse, atrackball, etc. that are designed to receive input form a user.

FIG. 12 is a block diagram of another data processing device and systemthat can be used implement the techniques as described with respect toFIGS. 1A-1C, 2, 3A-3B and 4-11. Data processing device 1200 is intendedto represent various forms of digital computers, such as laptops,desktops, workstations, personal digital assistants, servers, bladeservers, mainframes, and other appropriate computers. The componentsshown here, their connections and relationships, and their functions,are meant to be exemplary only, and are not meant to limitimplementations of the inventions described and/or claimed in thisdocument.

Data processing device 1200 includes a processor 1210, memory 1220, astorage device 1230, a high-speed interface 1250 connecting to memory1220. The data processing device can also include high-speed expansionports (not shown), and a low speed interface (not shown) connecting tolow speed bus (not shown) and storage device 1230. Each of thecomponents 1210, 1220, 1230, 1250, and 1220, are interconnected usingvarious busses, and can be mounted on a common motherboard or in othermanners as appropriate. The processor 1210 can process instructions forexecution within the data processing device 1200, including instructionsstored in the memory 1220 or on the storage device 1230 to displaygraphical information for a GUI on an external input/output device, suchas display 1240 coupled to an input/output interface 1260. In otherimplementations, multiple processors and/or multiple buses can be used,as appropriate, along with multiple memories and types of memory. Also,multiple data processing devices 1200 can be connected, with each deviceproviding portions of the necessary operations (e.g., as a server bank,a group of blade servers, or a multi-processor system).

The memory 1220 stores information within the data processing device1200. In one implementation, the memory 1220 is a computer-readablemedium. In one implementation, the memory 1220 is a volatile memory unitor units. In another implementation, the memory 1220 is a non-volatilememory unit or units.

The storage device 1230 is capable of providing mass storage for thedata processing device 1200. In one implementation, the storage device1230 is a computer-readable medium. In various differentimplementations, the storage device 1230 can be a floppy disk device, ahard disk device, an optical disk device, or a tape device, a flashmemory or other similar solid state memory device, or an array ofdevices, including devices in a storage area network or otherconfigurations. The computer program product contains instructions that,when executed, perform one or more methods, such as those describedabove. The computer- or machine-readable medium can include the memory1220, the storage device 1230, memory on processor 1210, or a propagatedsignal.

The high speed controller 1250 manages bandwidth-intensive operationsfor the data processing device 1200, while the low speed controllermanages lower bandwidth-intensive operations. Such allocation of dutiesis exemplary only. In one implementation, the high-speed controller 1250is coupled to memory 1220, display 1240 (e.g., through a graphicsprocessor or accelerator), and to high-speed expansion ports (notshown), which can accept various expansion cards (not shown). In theimplementation, low-speed controller (not shown) is coupled to storagedevice 1230 and low-speed expansion port (not shown). The low-speedexpansion port, which can include various communication ports (e.g.,USB, Bluetooth, Ethernet, wireless Ethernet) can be coupled to one ormore input/output devices, such as a keyboard, a pointing device, ascanner, or a networking device such as a switch or router, e.g.,through a network adapter.

The data processing device 1200 can be implemented in a number ofdifferent forms, as shown in the figure. For example, it can beimplemented as a standard server 1265, or multiple times in a group ofsuch servers. It can also be implemented as part of a rack server system1270. In addition, it can be implemented in a personal computer such asa laptop computer 1280.

Embodiments of the subject matter and the functional operationsdescribed in this specification can be implemented in digital electroniccircuitry, or in computer software, firmware, or hardware, including thestructures disclosed in this specification and their structuralequivalents, or in combinations of one or more of them. Embodiments ofthe subject matter described in this specification can be implemented asone or more computer program products, i.e., one or more modules ofcomputer program instructions encoded on a tangible computer or machinereadable medium for execution by, or to control the operation of, dataprocessing apparatus. The computer readable medium can be amachine-readable storage device, a machine-readable storage substrate, amemory device, a composition of matter effecting a machine-readablepropagated signal, or a combination of one or more of them.

The term “data processing apparatus” encompasses all apparatus, devices,and machines for processing data, including by way of example aprogrammable processor, a computer, or multiple processors or computers.The apparatus can include, in addition to hardware, code that creates anexecution environment for the computer program in question, e.g., codethat constitutes processor firmware, a protocol stack, a databasemanagement system, an operating system, or a combination of one or moreof them.

A computer program (also known as a program, software, softwareapplication, script, or code) can be written in any form of programminglanguage, including compiled or interpreted languages, or declarative orprocedural languages, and it can be deployed in any form, including as astand alone program or as a module, component, subroutine, or other unitsuitable for use in a computing environment. A computer program does notnecessarily correspond to a file in a file system. A program can bestored in a portion of a file that holds other programs or data (e.g.,one or more scripts stored in a markup language document), in a singlefile dedicated to the program in question, or in multiple coordinatedfiles (e.g., files that store one or more modules, sub programs, orportions of code). A computer program can be deployed to be executed onone computer or on multiple computers that are located at one site ordistributed across multiple sites and interconnected by a communicationnetwork.

The processes and logic flows described in this specification can beperformed by one or more programmable processors executing one or morecomputer programs to perform functions by operating on input data andgenerating output. The processes and logic flows can also be performedby, and apparatus can also be implemented as, special purpose logiccircuitry, e.g., an FPGA (field programmable gate array) or an ASIC(application specific integrated circuit).

Processors suitable for the execution of a computer program include, byway of example, both general and special purpose microprocessors, andany one or more processors of any kind of digital computer. Generally, aprocessor will receive instructions and data from a read only memory ora random access memory or both. The essential elements of a computer area processor for performing instructions and one or more memory devicesfor storing instructions and data. Generally, a computer will alsoinclude, or be operatively coupled to receive data from or transfer datato, or both, one or more mass storage devices for storing data, e.g.,magnetic, magneto optical disks, or optical disks. However, a computerneed not have such devices. Moreover, a computer can be embedded inanother device.

Computer readable media suitable for storing computer programinstructions and data include all forms of non volatile memory, mediaand memory devices, including by way of example semiconductor memorydevices, e.g., EPROM, EEPROM, and flash memory devices; magnetic disks,e.g., internal hard disks or removable disks; magneto optical disks; andCD ROM and DVD-ROM disks. The processor and the memory can besupplemented by, or incorporated in, special purpose logic circuitry.

To provide for interaction with a user, embodiments of the subjectmatter described in this specification can be implemented on a computerhaving a display device, e.g., a CRT (cathode ray tube) or LCD (liquidcrystal display) monitor, for displaying information to the user and akeyboard and a pointing device, e.g., a mouse or a trackball, by whichthe user can provide input to the computer. Other kinds of devices canbe used to provide for interaction with a user as well; for example,input from the user can be received in any form, including acoustic,speech, or tactile input.

Embodiments of the subject matter described in this specification can beimplemented in a computing system that includes a back end component,e.g., as a data server, or that includes a middleware component, e.g.,an application server, or that includes a front end component, e.g., aclient computer having a graphical user interface or a Web browserthrough which a user can interact with an implementation of the subjectmatter described is this specification, or any combination of one ormore such back end, middleware, or front end components. The componentsof the system can be interconnected by any form or medium of digitaldata communication, e.g., a communication network. Examples ofcommunication networks include a local area network (“LAN”) and a widearea network (“WAN”), e.g., the Internet.

The computing system can include clients and servers. A client andserver are generally remote from each other and typically interactthrough a communication network. The relationship of client and serverarises by virtue of computer programs running on the respectivecomputers and having a client-server relationship to each other.

While this specification contains many specifics, these should not beconstrued as limitations on the scope of any invention or of what may beclaimed, but rather as descriptions of features that may be specific toparticular embodiments of particular inventions. Certain features thatare described in this specification in the context of separateembodiments can also be implemented in combination in a singleembodiment. Conversely, various features that are described in thecontext of a single embodiment can also be implemented in multipleembodiments separately or in any suitable subcombination. Moreover,although features may be described above as acting in certaincombinations and even initially claimed as such, one or more featuresfrom a claimed combination can in some cases be excised from thecombination, and the claimed combination may be directed to asubcombination or variation of a subcombination.

Similarly, while operations are depicted in the drawings in a particularorder, this should not be understood as requiring that such operationsbe performed in the particular order shown or in sequential order, orthat all illustrated operations be performed, to achieve desirableresults. In certain circumstances, multitasking and parallel processingmay be advantageous. Moreover, the separation of various systemcomponents in the embodiments described above should not be understoodas requiring such separation in all embodiments, and it should beunderstood that the described program components and systems cangenerally be integrated together in a single software product orpackaged into multiple software products.

Only a few implementations and examples are described and otherimplementations, enhancements and variations can be made based on whatis described and illustrated in this application. For example, the imageadjustments can be applied to the images using a brush mask.

What is claimed is:
 1. A method comprising: presenting a choice ofbrushes preloaded with a plurality of image adjustments to a user of adata processing device; receiving, at the data processing device, a userselection of a brush of the brushes preloaded with the plurality ofimage adjustments to apply to an area of interest of the image, whereinthe user selected preloaded brush is preloaded with a correspondingimage adjustment; displaying the user selected preloaded brushcomprising an inner circle defining an inner area and an outer circlesurrounding the inner circle, the outer circle defining an outer area,the inner area and the outer area defining a cursor area to apply theselected image adjustment to pixels covered within the cursor area,wherein the inner area represents a maximum effect of the user selectedimage adjustment and the outer area represent a minimum effect;receiving, at the data processing device, user input indicating the areaof interest to apply the corresponding image adjustment preloaded on theuser selected preloaded brush; and applying, at the device, thecorresponding image adjustment to the indicated area of interest of theimage using the user selected preloaded brush.
 2. The method of claim 1,wherein the choice of brushes are preloaded with image adjustmentscomprising at least one of skin smoothing, blurring, saturation, color,lighten or darken.
 3. The method of claim 1, comprising: detecting,without user intervention, an edge of the indicated area of interest ofthe image; and controlling application of the image adjustmentcorresponding to the user selected preloaded brush onto the indicatedarea of interest of the image based on the detected edge.
 4. The methodof claim 1, comprising: identifying one or more areas of shadows,midtones or highlights on the image; and controlling application of theimage adjustment corresponding to the user selected preloaded brushbased on the identified one or more areas of shadows, midtones orhighlights per brush stroke.
 5. The method of claim 1, comprising:receiving user input modifying a strength of the image adjustmentcorresponding to the user selected preloaded brush.
 6. A non-transitorycomputer-readable medium storing instructions executable by a processorto perform operations comprising: presenting a choice of brushespreloaded with a plurality of image adjustments to a user of a dataprocessing device; receiving, at the data processing device, a userselection of a brush preloaded with an image adjustment to apply to anarea of interest of the image; displaying the user selected preloadedbrush comprising an inner circle defining an inner area to apply animage adjustment, and an outer circle surrounding the inner circle, theouter circle defining an outer area to apply an image adjustment;receiving, at the data processing device, a plurality of user inputs,one user input after another, using the brush, each user inputidentifying a respective image adjustment of the image adjustments toapply to the area of interest; and responsive to each user input of theplurality of user inputs, applying, at the data processing device, therespective image adjustment, one after another, to the indicated area ofinterest of the image using the user selected preloaded brush.
 7. Themedium of claim 6, wherein the user selected preloaded brush comprisesan adjustable cursor area comprising the inner area and the outer areato apply each respective image adjustment to pixels covered within thecursor area, wherein the inner area represents a maximum effect of eachrespective image adjustment and the outer area represent a minimumeffect.
 8. The medium of claim 6, wherein the choice of brushes arepreloaded with image adjustments comprising at least one of skinsmoothing, blurring, saturation, color, lighten or darken.
 9. The mediumof claim 6, the operations comprising: detecting, without userintervention, an edge of the indicated area of interest of the image;and controlling application of each respective image adjustmentcorresponding to the user selected preloaded brush onto the indicatedarea of interest of the image based on the detected edge.
 10. The mediumof claim 6, the operations comprising: identifying one or more areas ofshadows, midtones or highlights on the image; and controllingapplication of each respective image adjustment based on the identifiedone or more areas of shadows, midtones or highlights per brush stroke.11. The medium of claim 6, the operations comprising: receiving userinput modifying a strength of at least one of each respective imageadjustment corresponding to the user selected preloaded brush.
 12. Themedium of claim 6, comprising: receiving user input modifying a strengthof at least one of each respective image adjustment corresponding to theuser selected preloaded brush.
 13. A system comprising: a processor; anda non-transitory computer-readable medium storing instructionsexecutable by a processor to perform operations comprising: presenting achoice of brushes preloaded with a plurality of image adjustments to auser of a data processing device; receiving, at the data processingdevice, a user selection of a brush preloaded with an image adjustment;receiving, at the data processing device, user input to apply the brushto an image that includes an area of interest, wherein, in response tothe user input, the image adjustment preloaded on the brush is appliedto the image including the area of interest; receiving, at the dataprocessing device, another user input to remove the image adjustmentfrom portions of the image other than the area of interest; in responseto receiving the other user input to remove the image adjustment fromportions of the image other than the area of interest: detecting an edgeof the indicated area of interest of the image; and removing the imageadjustment from the portions of the image outside the detected edge ofthe area of interest.
 14. The system of claim 13, wherein the userselected preloaded brush comprises an adjustable cursor area comprisingan inner area and an outer area to apply the selected image adjustmentto pixels covered within the cursor area, wherein the inner arearepresents a maximum effect of the user selected image adjustment andthe outer area represent a minimum effect.
 15. The system of claim 13,wherein the choice of brushes are preloaded with image adjustmentscomprising at least one of skin smoothing, blurring, saturation, color,lighten or darken.
 16. The system of claim 13, the operationscomprising: identifying one or more areas of shadows, midtones orhighlights on the image; and controlling application of the imageadjustment corresponding to the user selected preloaded brush based onthe identified one or more areas of shadows, midtones or highlights perbrush stroke.
 17. The system of claim 13, the operations comprising:receiving user input modifying a strength of the image adjustmentcorresponding to the user selected preloaded brush.
 18. A systemcomprising: data processing apparatus; and a non-transitorycomputer-readable medium storing instructions executable by dataprocessing apparatus to perform operations comprising: presenting achoice of brushes preloaded with a plurality of image adjustments to auser of a data processing device; receiving, at the data processingdevice, a user selection of a brush of the brushes preloaded with theplurality of image adjustments to apply to an area of interest of theimage, wherein the user selected preloaded brush is preloaded with acorresponding image adjustment; displaying the user selected preloadedbrush comprising an inner circle defining an inner area and an outercircle surrounding the inner circle, the outer circle defining an outerarea, the inner area and the outer area defining a cursor area to applythe selected image adjustment to pixels covered within the cursor area,wherein the inner area represents a maximum effect of the user selectedimage adjustment and the outer area represent a minimum effect;receiving, at the data processing device, user input indicating the areaof interest to apply the corresponding image adjustment preloaded on theuser selected preloaded brush; and applying, at the device, thecorresponding image adjustment to the indicated area of interest of theimage using the user selected preloaded brush.
 19. The system of claim18, wherein the choice of brushes are preloaded with image adjustmentscomprising at least one of skin smoothing, blurring, saturation, color,lighten or darken.
 20. The system of claim 18, the operationscomprising: detecting, without user intervention, an edge of theindicated area of interest of the image; and controlling application ofthe image adjustment corresponding to the user selected preloaded brushonto the indicated area of interest of the image based on the detectededge.
 21. The system of claim 18, the operations comprising: identifyingone or more areas of shadows, midtones or highlights on the image; andcontrolling application of the image adjustment corresponding to theuser selected preloaded brush based on the identified one or more areasof shadows, midtones or highlights per brush stroke.
 22. The system ofclaim 18, the operations comprising: receiving user input modifying astrength of the image adjustment corresponding to the user selectedpreloaded brush.
 23. A computer-implemented method comprising:presenting a choice of brushes preloaded with a plurality of imageadjustments to a user of a data processing device; receiving, at thedata processing device, a user selection of a brush preloaded with animage adjustment to apply to an area of interest of the image;displaying the user selected preloaded brush comprising an inner circledefining an inner area to apply an image adjustment, and an outer circlesurrounding the inner circle, the outer circle defining an outer area toapply an image adjustment; receiving, at the data processing device, aplurality of user inputs, one user input after another, using the brush,each user input identifying a respective image adjustment of the imageadjustments to apply to the area of interest; and responsive to eachuser input of the plurality of user inputs, applying, at the dataprocessing device, the respective image adjustment, one after another,to the indicated area of interest of the image using the user selectedpreloaded brush.
 24. The method of claim 23, wherein the user selectedpreloaded brush comprises an adjustable cursor area comprising the innerarea and the outer area to apply each respective image adjustment topixels covered within the cursor area, wherein the inner area representsa maximum effect of each respective image adjustment and the outer arearepresent a minimum effect.
 25. The method of claim 23, wherein thechoice of brushes are preloaded with image adjustments comprising atleast one of skin smoothing, blurring, saturation, color, lighten ordarken.
 26. The method of claim 23, comprising: detecting an edge of theindicated area of interest of the image; and controlling application ofeach respective image adjustment corresponding to the user selectedpreloaded brush onto the indicated area of interest of the image basedon the detected edge.
 27. The method of claim 23, comprising:identifying one or more areas of shadows, midtones or highlights on theimage; and controlling application of each respective image adjustmentbased on the identified one or more areas of shadows, midtones orhighlights per brush stroke.
 28. A non-transitory computer-readablemedium storing instructions executable by data processing apparatus toperform operations comprising: presenting a choice of brushes preloadedwith a plurality of image adjustments to a user of a data processingdevice; receiving, at the data processing device, a user selection of abrush preloaded with an image adjustment; receiving, at the dataprocessing device, user input to apply the brush to an image thatincludes an area of interest, wherein, in response to the user input,the image adjustment preloaded on the brush is applied to the imageincluding the area of interest; receiving, at the data processingdevice, another user input to remove the image adjustment from portionsof the image other than the area of interest; in response to receivingthe other user input to remove the image adjustment from portions of theimage other than the area of request: detecting an edge of the indicatedarea of interest of the image; and removing the image adjustment fromthe portions of the image outside the detected edge of the area ofinterest.
 29. The medium of claim 28, wherein the user selectedpreloaded brush comprises an adjustable cursor area comprising an innerarea and an outer area to apply the selected image adjustment to pixelscovered within the cursor area, wherein the inner area represents amaximum effect of the user selected image adjustment and the outer arearepresent a minimum effect.
 30. The medium of claim 28, wherein thechoice of brushes are preloaded with image adjustments comprising atleast one of skin smoothing, blurring, saturation, color, lighten ordarken.
 31. The medium of claim 28, the operations comprising:identifying one or more areas of shadows, midtones or highlights on theimage; and controlling application of the image adjustment correspondingto the user selected preloaded brush based on the identified one or moreareas of shadows, midtones or highlights per brush stroke.
 32. Themedium of claim 28, the operations comprising: receiving user inputmodifying a strength of the image adjustment corresponding to the userselected preloaded brush.